package request

import (
	"github.com/flipped-aurora/gin-vue-admin/server/global"
	"github.com/flipped-aurora/gin-vue-admin/server/model/common/request"
)

// CreateContentRequest 创建内容的请求参数
type CreateContentRequest struct {
	CommunityID      uint               `json:"communityId"`             // 所属社区
	Type             global.ContentType `json:"type" binding:"required"` // 内容类型（1-动态，2-提问，3-回答）
	Title            string             `json:"title"`                   // 标题，可选，提问/帖子用
	Body             string             `json:"body" binding:"required"` // 内容文本
	ParentID         int64              `json:"parentId"`                // 父内容ID（用于问题-回答的父子关联）
	EnableProfRating bool               `json:"enableProfRating"`        // 是否启用专业评分（仅对post类型有效）
	// 是否为草稿
}

// UpdateContentRequest 更新内容的请求参数
type UpdateContentRequest struct {
	ID    int64  `json:"id" binding:"required"` // 内容ID
	Title string `json:"title"`                 // 标题
	Body  string `json:"body"`                  // 内容文本
}

// GetContentRequest 根据ID查询内容的请求参数
type GetContentRequest struct {
	ID int64 `json:"id" form:"id" binding:"required"` // 内容ID
}

// ListContentRequest 分页查询内容的请求参数
type ListContentRequest struct {
	Page     int `json:"page" form:"page" binding:"required"`         // 页码
	PageSize int `json:"pageSize" form:"pageSize" binding:"required"` // 每页数量

	CommunityID int64              `json:"communityId" form:"communityId"` // 所属社区
	Type        global.ContentType `json:"type" form:"type"`               // 内容类型（1-动态，2-提问，3-回答，其他-全部）

	PublisherID uint  `json:"publisherId" form:"publisherId"` // 发布者ID（仅物理社区查询时使用）
	ParentID    int64 `json:"parentId" form:"parentId"`       // 父内容ID（仅物理社区查询回答时使用）
}

// DeleteContentRequest 删除内容的请求参数
type DeleteContentRequest struct {
	ID int64 `json:"id" binding:"required"` // 内容ID
}

// UserRelatedContentRequest 获取用户相关内容的请求参数
type UserRelatedContentRequest struct {
	Page        int      `json:"page" form:"page" binding:"required"`         // 页码
	PageSize    int      `json:"pageSize" form:"pageSize" binding:"required"` // 每页数量
	ContentType int      `json:"contentType" form:"contentType"`              // 内容类型（0-全部，1-动态，2-提问，3-回答）
	IncludeType string   `json:"includeType" form:"includeType"`              // 包含类型（all-全部，interacted-互动内容，published-发布内容）
	ActionTypes []string `json:"actionTypes" form:"actionTypes"`              // 互动类型列表（like,dislike,mark,share,prof_rating）
}

// ListMarksRequest 分页查询点赞收藏内容
type ListMarksRequest struct {
	Page     int                `json:"page" form:"page" binding:"required"`         // 页码
	PageSize int                `json:"pageSize" form:"pageSize" binding:"required"` // 每页数量
	Type     global.ContentType `json:"type" form:"type" binding:"required"`         // 内容类型（1-动态，2-提问，3-回答）
}

// ListLikesRequest 分页查询点赞收藏内容
type ListLikesRequest struct {
	Page     int                `json:"page" form:"page" binding:"required"`         // 页码
	PageSize int                `json:"pageSize" form:"pageSize" binding:"required"` // 每页数量
	Type     global.ContentType `json:"type" form:"type" binding:"required"`         // 内容类型（1-动态，2-提问，3-回答）
}

// ContentUserActionRequest by用户查询内容操作记录
type ContentUserActionRequest struct {
	request.PageInfo
	ContentType int  `json:"content_type" form:"contentType" binding:"required"` // 内容类型
	ActionType  int  `json:"action_type" form:"action_type" binding:"required"`  // 操作类型。 操作类型。目前支持的操作类型 -1：发布，-2:专业度评价，1-点赞，3-收藏
	UserID      uint `json:"user_id" form:"user_id"`                             // 用户id; 当用户id不传时，默认查询当前登陆用户的内容操作记录
}
